1.1.1. Android 系统分区结构

  • bootloader分区

    系统加载器 相当于bios 通常厂商进行加密 仅能引导相应固件

  • boot分区

    存储boot.image 其中包括linux kernel initrd等文件

  • Splash分区

    开机图片 动画

  • radio分区

​ 基带所在分区 存储通信质量相关的驱动,常用驱动存在于linux内核boot分区

  • recovery分区

    mini Android boot镜像 用来做系统恢复 故障维修

  • System 分区

    存储系统镜像文件包括framework libraries 以及预装应用 即/system 目录

  • User Data分区

    内部存储分区 即挂载后 /data目录

  • Cache分区

    存储 日志 ota更新包等 cache

1.1.2. Android 系统启动

  • bootloader加载阶段
  • boot分区加载kernel initrd到ram 跳转kernel
  • 初始化设备服务 启动init
  • 加载系统服务 启动adbd vold zygote servicemanager等
  • 虚拟机初始化 startVM 启动framework服务
  • 启动完成 发送boot_complete广播

image-20210520104841402

1.1.3. init进程

pid = 1 0号是kernel

解析init.rc脚本

初始化属性服务 property servcie

for循环 建立子进程 对关键服务进行重启和异常处理

init.rc脚本

启动系统开启service和deamons

指定不同的service在不同的用户或者用户组运行

修改设置全局的属性服务

注册一些动作和命令在特定的时间执行

1.1.4. Vold

Volume Daemon 存储类守护进程 负责CDROM USB MMC 存储挂载任务。

处理过程

创建链接

vold一方面接收驱动信息,将信息传给应用层,另一方面接受上层命令完成相应功能。

  • vold socket:负责vold与应用层信息传递
  • 访问udev的socket:负责vold与底层信息传递
引导

vold启动时,对现有外设存储设备处理。首先加载vold.conf,并检查挂载点是否被挂载,执行mmc卡挂载,最后处理usb大容量存储

事件处理

通过对两个链接舰艇,完成对动态事件的处理

1.1.5. servicemanager

  • 打开dev/binder 并在内存映射128kb的空间
  • 通知bidner设备,把自己变成context_manager
  • 循环读取binder设备,如果有对service的请求,就去调用svcmgr_handler函数回调处理请求1

image-20210520113322666

Copyright © tracyliu-FE 2021 all right reserved,powered by Gitbook文件修订时间: 2022-03-06 12:52:33

results matching ""

    No results matching ""